↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
REACH_IN(X, Z, Edges) → U21(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
REACH_IN(X, Z, Edges) → MEMBER1_IN(.(X, .(Y, [])), Edges)
MEMBER1_IN(X, .(H, L)) → U51(X, H, L, member1_in(X, L))
MEMBER1_IN(X, .(H, L)) → MEMBER1_IN(X, L)
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U31(X, Z, Edges, reach_in(Y, Z, Edges))
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → REACH_IN(Y, Z, Edges)
REACH_IN(X, Y, Edges) → U11(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
REACH_IN(X, Y, Edges) → MEMBER_IN(.(X, .(Y, [])), Edges)
MEMBER_IN(X, .(H, L)) → U41(X, H, L, member_in(X, L))
MEMBER_IN(X, .(H, L)) → MEMBER_IN(X, L)
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
REACH_IN(X, Z, Edges) → U21(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
REACH_IN(X, Z, Edges) → MEMBER1_IN(.(X, .(Y, [])), Edges)
MEMBER1_IN(X, .(H, L)) → U51(X, H, L, member1_in(X, L))
MEMBER1_IN(X, .(H, L)) → MEMBER1_IN(X, L)
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U31(X, Z, Edges, reach_in(Y, Z, Edges))
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → REACH_IN(Y, Z, Edges)
REACH_IN(X, Y, Edges) → U11(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
REACH_IN(X, Y, Edges) → MEMBER_IN(.(X, .(Y, [])), Edges)
MEMBER_IN(X, .(H, L)) → U41(X, H, L, member_in(X, L))
MEMBER_IN(X, .(H, L)) → MEMBER_IN(X, L)
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MEMBER_IN(X, .(H, L)) → MEMBER_IN(X, L)
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MEMBER_IN(X, .(H, L)) → MEMBER_IN(X, L)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MEMBER_IN(X, .(H, L)) → MEMBER_IN(X, L)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
MEMBER1_IN(X, .(H, L)) → MEMBER1_IN(X, L)
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
MEMBER1_IN(X, .(H, L)) → MEMBER1_IN(X, L)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PrologToPiTRSProof
MEMBER1_IN(.(H, L)) → MEMBER1_IN(L)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
REACH_IN(X, Z, Edges) → U21(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → REACH_IN(Y, Z, Edges)
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
REACH_IN(X, Z, Edges) → U21(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → REACH_IN(Y, Z, Edges)
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
REACH_IN(X, Z, Edges) → U21(Z, Edges, member1_in(Edges))
U21(Z, Edges, member1_out(.(X, .(Y, [])))) → REACH_IN(Y, Z, Edges)
member1_in(.(H, L)) → U5(member1_in(L))
member1_in(.(H, L)) → member1_out(H)
U5(member1_out(X)) → member1_out(X)
member1_in(x0)
U5(x0)
REACH_IN(y0, y1, .(x0, x1)) → U21(y1, .(x0, x1), U5(member1_in(x1)))
REACH_IN(y0, y1, .(x0, x1)) → U21(y1, .(x0, x1), member1_out(x0))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
REACH_IN(y0, y1, .(x0, x1)) → U21(y1, .(x0, x1), U5(member1_in(x1)))
U21(Z, Edges, member1_out(.(X, .(Y, [])))) → REACH_IN(Y, Z, Edges)
REACH_IN(y0, y1, .(x0, x1)) → U21(y1, .(x0, x1), member1_out(x0))
member1_in(.(H, L)) → U5(member1_in(L))
member1_in(.(H, L)) → member1_out(H)
U5(member1_out(X)) → member1_out(X)
member1_in(x0)
U5(x0)
U21(z1, .(.(x2, .(x3, [])), z3), member1_out(.(x2, .(x3, [])))) → REACH_IN(x3, z1, .(.(x2, .(x3, [])), z3))
U21(z1, .(z2, z3), member1_out(.(x2, .(x3, [])))) → REACH_IN(x3, z1, .(z2, z3))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ ForwardInstantiation
↳ PrologToPiTRSProof
U21(z1, .(.(x2, .(x3, [])), z3), member1_out(.(x2, .(x3, [])))) → REACH_IN(x3, z1, .(.(x2, .(x3, [])), z3))
U21(z1, .(z2, z3), member1_out(.(x2, .(x3, [])))) → REACH_IN(x3, z1, .(z2, z3))
REACH_IN(y0, y1, .(x0, x1)) → U21(y1, .(x0, x1), U5(member1_in(x1)))
REACH_IN(y0, y1, .(x0, x1)) → U21(y1, .(x0, x1), member1_out(x0))
member1_in(.(H, L)) → U5(member1_in(L))
member1_in(.(H, L)) → member1_out(H)
U5(member1_out(X)) → member1_out(X)
member1_in(x0)
U5(x0)
REACH_IN(x0, x1, .(.(y_1, .(y_2, [])), x3)) → U21(x1, .(.(y_1, .(y_2, [])), x3), member1_out(.(y_1, .(y_2, []))))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
U21(z1, .(.(x2, .(x3, [])), z3), member1_out(.(x2, .(x3, [])))) → REACH_IN(x3, z1, .(.(x2, .(x3, [])), z3))
REACH_IN(x0, x1, .(.(y_1, .(y_2, [])), x3)) → U21(x1, .(.(y_1, .(y_2, [])), x3), member1_out(.(y_1, .(y_2, []))))
U21(z1, .(z2, z3), member1_out(.(x2, .(x3, [])))) → REACH_IN(x3, z1, .(z2, z3))
REACH_IN(y0, y1, .(x0, x1)) → U21(y1, .(x0, x1), U5(member1_in(x1)))
member1_in(.(H, L)) → U5(member1_in(L))
member1_in(.(H, L)) → member1_out(H)
U5(member1_out(X)) → member1_out(X)
member1_in(x0)
U5(x0)
U21(z1, .(.(x2, .(x3, [])), z3), member1_out(.(x2, .(x3, [])))) → REACH_IN(x3, z1, .(.(x2, .(x3, [])), z3))
REACH_IN(x0, x1, .(.(y_1, .(y_2, [])), x3)) → U21(x1, .(.(y_1, .(y_2, [])), x3), member1_out(.(y_1, .(y_2, []))))
U21(z1, .(z2, z3), member1_out(.(x2, .(x3, [])))) → REACH_IN(x3, z1, .(z2, z3))
REACH_IN(y0, y1, .(x0, x1)) → U21(y1, .(x0, x1), U5(member1_in(x1)))
member1_in(.(H, L)) → U5(member1_in(L))
member1_in(.(H, L)) → member1_out(H)
U5(member1_out(X)) → member1_out(X)
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
REACH_IN(X, Z, Edges) → U21(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
REACH_IN(X, Z, Edges) → MEMBER1_IN(.(X, .(Y, [])), Edges)
MEMBER1_IN(X, .(H, L)) → U51(X, H, L, member1_in(X, L))
MEMBER1_IN(X, .(H, L)) → MEMBER1_IN(X, L)
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U31(X, Z, Edges, reach_in(Y, Z, Edges))
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → REACH_IN(Y, Z, Edges)
REACH_IN(X, Y, Edges) → U11(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
REACH_IN(X, Y, Edges) → MEMBER_IN(.(X, .(Y, [])), Edges)
MEMBER_IN(X, .(H, L)) → U41(X, H, L, member_in(X, L))
MEMBER_IN(X, .(H, L)) → MEMBER_IN(X, L)
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
REACH_IN(X, Z, Edges) → U21(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
REACH_IN(X, Z, Edges) → MEMBER1_IN(.(X, .(Y, [])), Edges)
MEMBER1_IN(X, .(H, L)) → U51(X, H, L, member1_in(X, L))
MEMBER1_IN(X, .(H, L)) → MEMBER1_IN(X, L)
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U31(X, Z, Edges, reach_in(Y, Z, Edges))
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → REACH_IN(Y, Z, Edges)
REACH_IN(X, Y, Edges) → U11(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
REACH_IN(X, Y, Edges) → MEMBER_IN(.(X, .(Y, [])), Edges)
MEMBER_IN(X, .(H, L)) → U41(X, H, L, member_in(X, L))
MEMBER_IN(X, .(H, L)) → MEMBER_IN(X, L)
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
MEMBER_IN(X, .(H, L)) → MEMBER_IN(X, L)
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
MEMBER_IN(X, .(H, L)) → MEMBER_IN(X, L)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
MEMBER_IN(X, .(H, L)) → MEMBER_IN(X, L)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
MEMBER1_IN(X, .(H, L)) → MEMBER1_IN(X, L)
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
MEMBER1_IN(X, .(H, L)) → MEMBER1_IN(X, L)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
MEMBER1_IN(.(H, L)) → MEMBER1_IN(L)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
REACH_IN(X, Z, Edges) → U21(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → REACH_IN(Y, Z, Edges)
reach_in(X, Z, Edges) → U2(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
U2(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → U3(X, Z, Edges, reach_in(Y, Z, Edges))
reach_in(X, Y, Edges) → U1(X, Y, Edges, member_in(.(X, .(Y, [])), Edges))
member_in(X, .(H, L)) → U4(X, H, L, member_in(X, L))
member_in(H, .(H, L)) → member_out(H, .(H, L))
U4(X, H, L, member_out(X, L)) → member_out(X, .(H, L))
U1(X, Y, Edges, member_out(.(X, .(Y, [])), Edges)) → reach_out(X, Y, Edges)
U3(X, Z, Edges, reach_out(Y, Z, Edges)) → reach_out(X, Z, Edges)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
REACH_IN(X, Z, Edges) → U21(X, Z, Edges, member1_in(.(X, .(Y, [])), Edges))
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → REACH_IN(Y, Z, Edges)
member1_in(X, .(H, L)) → U5(X, H, L, member1_in(X, L))
member1_in(H, .(H, L)) → member1_out(H, .(H, L))
U5(X, H, L, member1_out(X, L)) → member1_out(X, .(H, L))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
REACH_IN(X, Z, Edges) → U21(X, Z, Edges, member1_in(Edges))
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → REACH_IN(Y, Z, Edges)
member1_in(.(H, L)) → U5(H, L, member1_in(L))
member1_in(.(H, L)) → member1_out(H, .(H, L))
U5(H, L, member1_out(X, L)) → member1_out(X, .(H, L))
member1_in(x0)
U5(x0, x1, x2)
REACH_IN(y0, y1, .(x0, x1)) → U21(y0, y1, .(x0, x1), member1_out(x0, .(x0, x1)))
REACH_IN(y0, y1, .(x0, x1)) → U21(y0, y1, .(x0, x1), U5(x0, x1, member1_in(x1)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
U21(X, Z, Edges, member1_out(.(X, .(Y, [])), Edges)) → REACH_IN(Y, Z, Edges)
REACH_IN(y0, y1, .(x0, x1)) → U21(y0, y1, .(x0, x1), member1_out(x0, .(x0, x1)))
REACH_IN(y0, y1, .(x0, x1)) → U21(y0, y1, .(x0, x1), U5(x0, x1, member1_in(x1)))
member1_in(.(H, L)) → U5(H, L, member1_in(L))
member1_in(.(H, L)) → member1_out(H, .(H, L))
U5(H, L, member1_out(X, L)) → member1_out(X, .(H, L))
member1_in(x0)
U5(x0, x1, x2)
U21(z0, z1, .(z2, z3), member1_out(.(z0, .(x3, [])), .(z2, z3))) → REACH_IN(x3, z1, .(z2, z3))
U21(z0, z1, .(.(z0, .(x3, [])), z3), member1_out(.(z0, .(x3, [])), .(.(z0, .(x3, [])), z3))) → REACH_IN(x3, z1, .(.(z0, .(x3, [])), z3))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ ForwardInstantiation
U21(z0, z1, .(z2, z3), member1_out(.(z0, .(x3, [])), .(z2, z3))) → REACH_IN(x3, z1, .(z2, z3))
REACH_IN(y0, y1, .(x0, x1)) → U21(y0, y1, .(x0, x1), member1_out(x0, .(x0, x1)))
U21(z0, z1, .(.(z0, .(x3, [])), z3), member1_out(.(z0, .(x3, [])), .(.(z0, .(x3, [])), z3))) → REACH_IN(x3, z1, .(.(z0, .(x3, [])), z3))
REACH_IN(y0, y1, .(x0, x1)) → U21(y0, y1, .(x0, x1), U5(x0, x1, member1_in(x1)))
member1_in(.(H, L)) → U5(H, L, member1_in(L))
member1_in(.(H, L)) → member1_out(H, .(H, L))
U5(H, L, member1_out(X, L)) → member1_out(X, .(H, L))
member1_in(x0)
U5(x0, x1, x2)
REACH_IN(x0, x1, .(.(y_4, .(y_5, [])), x3)) → U21(x0, x1, .(.(y_4, .(y_5, [])), x3), member1_out(.(y_4, .(y_5, [])), .(.(y_4, .(y_5, [])), x3)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ NonTerminationProof
U21(z0, z1, .(z2, z3), member1_out(.(z0, .(x3, [])), .(z2, z3))) → REACH_IN(x3, z1, .(z2, z3))
REACH_IN(x0, x1, .(.(y_4, .(y_5, [])), x3)) → U21(x0, x1, .(.(y_4, .(y_5, [])), x3), member1_out(.(y_4, .(y_5, [])), .(.(y_4, .(y_5, [])), x3)))
U21(z0, z1, .(.(z0, .(x3, [])), z3), member1_out(.(z0, .(x3, [])), .(.(z0, .(x3, [])), z3))) → REACH_IN(x3, z1, .(.(z0, .(x3, [])), z3))
REACH_IN(y0, y1, .(x0, x1)) → U21(y0, y1, .(x0, x1), U5(x0, x1, member1_in(x1)))
member1_in(.(H, L)) → U5(H, L, member1_in(L))
member1_in(.(H, L)) → member1_out(H, .(H, L))
U5(H, L, member1_out(X, L)) → member1_out(X, .(H, L))
member1_in(x0)
U5(x0, x1, x2)
U21(z0, z1, .(z2, z3), member1_out(.(z0, .(x3, [])), .(z2, z3))) → REACH_IN(x3, z1, .(z2, z3))
REACH_IN(x0, x1, .(.(y_4, .(y_5, [])), x3)) → U21(x0, x1, .(.(y_4, .(y_5, [])), x3), member1_out(.(y_4, .(y_5, [])), .(.(y_4, .(y_5, [])), x3)))
U21(z0, z1, .(.(z0, .(x3, [])), z3), member1_out(.(z0, .(x3, [])), .(.(z0, .(x3, [])), z3))) → REACH_IN(x3, z1, .(.(z0, .(x3, [])), z3))
REACH_IN(y0, y1, .(x0, x1)) → U21(y0, y1, .(x0, x1), U5(x0, x1, member1_in(x1)))
member1_in(.(H, L)) → U5(H, L, member1_in(L))
member1_in(.(H, L)) → member1_out(H, .(H, L))
U5(H, L, member1_out(X, L)) → member1_out(X, .(H, L))